#pragma once
#include <iostream>
#include <assert.h>
#include <vector> 
#include <string>
#include <unordered_map>
#include <functional>
#include <unistd.h>

using namespace std;

typedef function<void()> func;

vector<func> tasklist;   // 记录方法数
unordered_map<int, string> task_inf;  // 记录方法信息。

void readMySQL()
{
    cout << " process : " << getpid() << " 访问数据库" << endl;
}

void val()
{
    cout << " process : " << getpid() << " 进行数据运算" << endl;
}


void save()
{
    cout << " process : " << getpid() << " 进行数据持久化"  << endl;
}

void cal()
{
    cout << " process : " << getpid() << " 进行数据加密" << endl;
}

// 加载任务表
void Taskloading()
{
    task_inf.insert({tasklist.size(), "readMySQL"});
    tasklist.push_back(readMySQL);

    task_inf.insert({tasklist.size(), "val"});
    tasklist.push_back(val);
    
    task_inf.insert({tasklist.size(), "save"});
    tasklist.push_back(save);
    
    task_inf.insert({tasklist.size(), "cal"});
    tasklist.push_back(cal);

    cout << "方法加载成功！" << endl;
}

// 打印方法表
void print_task()
{

    for (const auto& e : task_inf)
    {
        cout << e.first << " " << e.second << endl;
    }
}

int tasksize()
{
    return tasklist.size();
}

